This repository has been archived by the owner on Jun 7, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 62
Implement support for --chmod and --chown rsync flags (supersedes PR #46) #49
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
By default, afl-sync behaves the same as before, running rsync in archive mode (-a) and trasferring local permissions and owner/group. However, --chmod PERMS and --chown USER:GROUP can now be specified, which passes these flags to rsync, enabling the user to specify the permissions, owner and group of the remote files. This is useful when ensuring the remote storage dir is readable and/or writable on the server for all processes that need to access it. The new flags are only supported when pushing and in the push phase of syncing, not pulling. The support for the flags was implemented by the introduction of a new parameter for AflRsync, which represents the options for rsync, both its get and put modes.
rsync seems to internally convert --chown=foo:bar to --usermap=*:foo --groupmap=*:bar. Due to a bug[*], it passes this to a shell at some point without properly escaping it. The shell then globs the wildcard, which is not correct and likely makes the shell complain about nonexistent matches. A workaround is to pass --protect-args to rsync which makes makes it work as intended but may have other consequences. [*] https://bugzilla.samba.org/show_bug.cgi?id=10705
1 similar comment
Thanks for your continued effort! :) I think the best way to test this beast (afl-utils as a whole) is to use Python's unittest.Mock API. Back in the day when I started to write the test suite I didn't know mocking existed, so that's the reason it's not used yet. So don't worry too much about the missing tests. I'll take a closer look at your PR and deal with testing the new feature. |
I fixed some minor issues in Thanks again! |
I've switched to the experimental branch in my setup and have been using it for a few days. So far everything seems to be working. |
Cool, thanks for your feedback! |
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I've implemented most of the things you asked for, except testing the new features. I'm not sure how to approach testing the
--chown
functionality since I don't know which users/groups I can rely on being present in the testing environment.Regarding
--chmod
, I have started implementing tests but I'm not sure what's the best way to organize them. I've thought about making a newtest_chmod
sync dir with a single file inside it with certain permissions set up, then adding a new test casetest_afl_rsync_chmod
which tests push/sync by using--chmod
to change permissions and verifying they are correct (by callingAflRsync
directly). How does that sound?I'm in a bit of a hurry, so sorry if something's unclear.